package org.example.mrrope.service.impl;

import lombok.extern.slf4j.Slf4j;
import org.example.mrrope.service.OwnRopeWorkOrderService;
import org.example.mrrope.utils.DingUtil;
import org.example.mrrope.utils.FormUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

/**
 * @author Lizzy 制绳个人派工单
 * @date 2024/06/11
 * @desc
 */

@Service
@Slf4j
public class OwnRopeWorkOrderServiceImpl implements OwnRopeWorkOrderService {
    @Autowired
    private DingUtil dingUtil;

    @Override
    @Async
    public Integer saveOwnRopeWorkOrder(String id) {
        try {
            //得到制绳车间派工单数据
            log.info("开始调用宜搭查询接口");
            JSONObject jsonObject = new JSONObject(dingUtil.getYidaById(id));
            log.info("调用查询接口返回制绳车间派工单数据" + jsonObject);
            // body
            int res = 1;
            if (jsonObject.has("tableField_lxa5zy3e")) {
                JSONArray OwnerTable = jsonObject.getJSONArray("tableField_lxa5zy3e");
                for (int i = 0; i < OwnerTable.length(); i++) {
                    JSONObject ownJson = getUpJson(jsonObject, id);
                    ownJson.put("employeeField_lxy96d6n", OwnerTable.getJSONObject(i).get("employeeField_lxa5zy3j_id"));
                    ownJson.put("numberField_lxy96d6o", OwnerTable.getJSONObject(i).get("numberField_lxa5zy3l"));//任务数量
                    ownJson.put("numberField_lz9f1u9m", OwnerTable.getJSONObject(i).get("numberField_lxa5zy3l"));//待转交总量
                    ownJson.put("dateField_lxy96d6p", OwnerTable.getJSONObject(i).get("dateField_lxa5zy3k"));
                    ownJson.put("numberField_lz9f1u9m", OwnerTable.getJSONObject(i).get("numberField_lxa5zy3l"));
                    ownJson.put("textField_lxy96d6q", OwnerTable.getJSONObject(i).has("textField_lxa5zy3m")?OwnerTable.getJSONObject(i).get("textField_lxa5zy3m"):null);
                    double rwsl = Double.parseDouble(OwnerTable.getJSONObject(i).get("numberField_lxa5zy3l").toString());//任务数量
                    double gj = Double.parseDouble(jsonObject.get("numberField_lz770chf").toString());//工价
                    ownJson.put("numberField_lzap3q11", rwsl * gj);//主机||编织机作业人工资
                    ownJson.put("textField_lxa9zne1", "已下发待确认");
                    log.info("*************新建制绳车间个人派工单请求参数---->>>>" + ownJson);
                    //应颂签
                    String result = dingUtil.startInstance(ownJson, "175440340124509648", "FORM-3884CC44678A452396C20BE8554B373FQ2HB");
                    log.info("*************新建制绳车间个人派工单返回参数---->>>>" + result);
                    if (result != null) {
                        log.info("新建制绳车间个人派工单成功，单号====》" + result);
                        res = 0;
                    } else {
                        log.info("新建制绳车间个人派工单失败");
                        res = 1;
                    }
                }
//                String upRes = dingUtil.UpdateYiDa(id, jsonObject);
//                log.info("生成制绳个人任务后更新结果===》" + upRes + jsonObject);
                return res;
            } else {
                log.info("未找到工人");
                return 1;
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    private static JSONObject getUpJson(JSONObject jsonObject, String id) {
        JSONObject ownJson = new JSONObject();
        JSONArray jsonArrayOne = FormUtils.getAssociationFormField("FORM-0874A95C33B240AF94AEE5E888DC7CE0G3BF", jsonObject.get("textField_lyz4wuwl").toString(), id);
        ownJson.put("associationFormField_lxaa0dy4", jsonArrayOne);
        ownJson.put("dateField_lugaf2fw", System.currentTimeMillis());//日期
        ownJson.put("textField_lxa5zy34", jsonObject.get("textField_lxa5zy34"));//客户名称
        ownJson.put("textField_lugaf2gf", jsonObject.get("textField_lugaf2gf"));//客户货号
        ownJson.put("textField_lxy96d6b", jsonObject.get("textField_lxa5zy3f"));//半成品B号
        ownJson.put("dateField_m0ajm0sm", jsonObject.get("dateField_lugaf2g8"));//日期
        ownJson.put("textField_lxy96d6d", jsonObject.get("textField_lxa5zy39"));//绳子C号
        ownJson.put("textField_lxy96d6f", jsonObject.get("textField_lxa5zy3i"));//绳子名称
        ownJson.put("numberField_lugaf2gr", jsonObject.has("numberField_lugaf2gr") ? jsonObject.get("numberField_lugaf2gr") : "");//米重
        ownJson.put("textField_lugaf2go", jsonObject.has("textField_lugaf2go") ? jsonObject.get("textField_lugaf2go") : "");//绳子口径
        ownJson.put("textField_lxv646q1", jsonObject.has("textField_lz6pjr60") ? jsonObject.get("textField_lz6pjr60") : "");//机器编号
        ownJson.put("numberField_lugaf2gx", jsonObject.has("numberField_lugaf2gx") ? jsonObject.get("numberField_lugaf2gx") : "");//副机重量
        ownJson.put("textField_lxv646q1", jsonObject.has("textField_lxv646q1") ? jsonObject.get("textField_lxv646q1") : "");//绳子类型
        ownJson.put("numberField_lugaf2gh", jsonObject.has("numberField_lugaf2gh") ? jsonObject.get("numberField_lugaf2gh") : 0);//生产总量
//        ownJson.put("textareaField_lz9jb2tt", jsonObject.has("textareaField_lz9htdd2") ? jsonObject.get("textareaField_lz9htdd2") : "");//花色挂法
        ownJson.put("textField_lxy96d6h", jsonObject.has("textField_lz9iqyyp") ? jsonObject.get("textField_lz9iqyyp") : "");//绳子规格
        ownJson.put("imageField_lxy96d6i", jsonObject.has("imageField_lugaf2h3") ? jsonObject.get("imageField_lugaf2h3") : "");//成品图片
        ownJson.put("textField_lywpr91j", jsonObject.has("textField_lyz4wuwl") ? jsonObject.get("textField_lyz4wuwl") : "");//SO号
        ownJson.put("textField_lz9fg8ks", jsonObject.has("textField_lz9h1vyz") ? jsonObject.get("textField_lz9h1vyz") : "");//成品名称
        ownJson.put("textField_lz9jb2tu", jsonObject.has("textField_lz9ieioo") ? jsonObject.get("textField_lz9ieioo") : "");//注意点
        ownJson.put("textField_lz9jb2tu", jsonObject.has("textField_m2e5go0p") ? jsonObject.get("textField_m2e5ira7") : "");//PO号
        ownJson.put("tableField_lwg8vm75", jsonObject.get("tableField_lwg8vm75"));//棉纱子表
//        ownJson.put("numberField_lxy94hvc", jsonObject.has("numberField_lxy94hvc") ? jsonObject.get("numberField_lxy94hvc") : 0);//副机工价
//        ownJson.put("numberField_lz770chf", jsonObject.has("numberField_lz770chf") ? jsonObject.get("numberField_lz770chf") : 0);//主机工价
//        ownJson.put("numberField_lz770chn", jsonObject.has("numberField_lz770chn") ? jsonObject.get("numberField_lz770chn") : 0);//挂架工价
//        ownJson.put("numberField_lz770chg", jsonObject.has("numberField_lz770chg") ? jsonObject.get("numberField_lz770chg") : 0);//制股工价
//        ownJson.put("numberField_lz770chv", jsonObject.has("numberField_lz770chv") ? jsonObject.get("numberField_lz770chv") : 0);//制股比例
//        ownJson.put("numberField_lz770chy", jsonObject.has("numberField_lz770chy") ? jsonObject.get("numberField_lz770chy") : 0);//制股总价
//        ownJson.put("employeeField_lz770chi", jsonObject.has("employeeField_lz770chi") ? jsonObject.get("employeeField_lz770chi") : "");
        ownJson.put("numberField_lz770cho", jsonObject.has("numberField_lz770cho") ? jsonObject.get("numberField_lz770cho") : 0);//总价
        ownJson.put("textField_m2u4byhl", "主机");//主机判断
        ownJson.put("numberField_m2dgqymu", 0);//已完成工作量
        ownJson.put("numberField_m2dgqymv", jsonObject.has("numberField_lugaf2gh") ? jsonObject.get("numberField_lugaf2gh") : 0);//未完成工作量
        ownJson.put("numberField_lz770cho", "副机");//副机判断
        ownJson.put("numberField_lz770cht", jsonObject.has("numberField_lz770cht") ? jsonObject.get("numberField_lz770cht") : 0);//单价
        return ownJson;
    }
}
